SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Proc [dbo].[SP_TXMVTO_CNTB_I07]
/*-------------------------------------------------------------------*/            
/*----- Empresa           : OFISIS S.A.                          ----*/            
/*----- Cliente           : OFISIS S.A.                          ----*/            
/*----- Sistema           : Contabilidad                         ----*/            
/*----- Modulo            : Empresa                              ----*/            
/*----- Programa          : Traslacion de moneda                 ----*/            
/*----- Nombre            : SP_TXMVTO_CNTB_I07                   ----*/            
/*----- Script            : TXMVTO_CNTB                          ----*/            
/*----- Desarrollado por  : Alberto Munoz Sosa                   ----*/            
/*----- Fecha             : 11/08/1996                           ----*/            
/*----- Base de Datos     : MS SQL Server                        ----*/            
/*----- Version BD        : 6.5                                  ----*/            
/*-------------------------------------------------------------------*/            
/*-------------------------------------------------------------------*/            
/*----- Comentarios  : Al terminar este proceso se debe          ----*/            
/*----- ejecutar para la contabilidad de                         ----*/            
/*----- destino el proceso de ajuste de                          ----*/            
/*----- diferencia de cambio para que se                         ----*/            
/*----- generen los asientos de ajuste por                       ----*/            
/*----- traslaci+n de moneda                                     ----*/            
/*-------------------------------------------------------------------*/            
/*-------------------------------------------------------------------*/            
/*------Modificado por 1 : Percy Garc?a -------------------------------*/            
/*------Fecha: 03/03/2004           --------------------------------*/            
/*------Comentario: Se valido que no cargue los asientos caso op. dif. cambio pendientes---*/            
/*-------------------------------------------------------------------*/           
/*-------------------------------------------------------------------*/            
/*------Modificado por 2 : Percy Garc?a -------------------------------*/            
/*------Fecha: 25/03/2004           --------------------------------*/            
/*------Comentario: SE COLOCO IS NULL CASO OPERACION GESTION NO EXISTA ---*/            
/*-------------------------------------------------------------------*/           
/*---------------------------------------------------------------------*/  
/*----- Modificado 3 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 05/06/2004                             -----*/  
/*----- Detalle Modifica : usuario creacion y modif               -----*/  
/*---------------------------------------------------------------------*/ 
/*-------------------------------------------------------------------*/            
/*----- Drop proc SP_TXMVTO_CNTB_I07                             ----*/            
/*----- Grant all on SP_TXMVTO_CNTB_I07 to PUBLIC                ----*/            
/*----- SP_TXMVTO_CNTB_I07 '01',1,2,'DOL',2004,1,1               ----*/            
/*-------------------------------------------------------------------*/           
    
@ISCO_EMPR  TD_VC_002,            
@INNU_CNTB_EMP1  TD_IN_001_CONT,            
@INNU_CNTB_EMP2  TD_IN_001_CONT,            
@ISCO_MONE_CTB2  TD_VC_003,            
@INNU_ANNO  TD_IN_004_ANNO,            
@INNU_MES1  TD_IN_002_MESE,            
@INNU_MES2  TD_IN_002_MESE            
            
As            
            
Begin Transaction SP_TXMVTO_CNTB_I07            
Declare             
@CSCO_UNID_CNTB  TD_VC_003,            
@CSCO_OPRC_CNTB         TD_VC_003,            
@CNNU_MESE  TD_IN_002_MESE,            
@CSNU_ASTO         TD_VC_010,            
@CNNU_SECU  TD_IN_002,            
@CDFE_ASTO_CNTB  TD_DT_001,            
@CSCO_CNTA_EMPR  TD_VC_020_CNTA,            
@CSTI_AUXI_EMPR  TD_VC_001,            
@CSCO_AUXI_EMPR   TD_VC_020,            
@CSTI_DOCU  TD_VC_003,            
@CSNU_DOCU  TD_VC_020,            
@CDFE_DOCU  TD_DT_001,            
@CSTI_CAMB  TD_VC_003,            
@CSCO_MONE  TD_VC_003,            
@CNFA_CAMB   TD_NU_015_006,            
@CSTI_OPER  TD_VC_003,            
@CNIM_MVTO_ORIG  TD_NU_016_004,            
@CNIM_MVTO_CNTB  TD_NU_016_004,            
@CSDE_GLOS  TD_VC_100,            
@CSNO_GIRA  TD_VC_050,            
@CSCO_ORDE_SERV  TD_VC_020,            
@CSSI_MVTO_CNTB  TD_VC_003,            
@CSST_CNTA_CAMB  TD_VC_003,            
@CNFA_VNTA_REFE  TD_NU_015_006,            
@CNFA_CAMB_DIAR  TD_NU_015_006,            
@VSID_GEST  TD_VC_003,            
@VSID_DIFE  TD_VC_003,            
@VSID_0004  TD_VC_003,            
@VSOP_GEST  TD_VC_003,            
@VSOP_DIFE  TD_VC_003,            
@VSOP_DIFE_PEND  TD_VC_003,            
@VNNU_ULTI_ASTO  TD_IN_001,            
@CNFA_CAMB_0001         TD_NU_015_006,            
@CNFA_CAMB_0002         TD_NU_015_006,            
@VSCO_MONE_CTB1         TD_VC_003,            
@VSCO_MONE_NACI         TD_VC_003,       
@VSCO_MONE_0001         TD_VC_003,         
@VSCO_MONE_BA01         TD_VC_003         
      
            
/* Obtiene informacion sobre operaciones de gestion y diferencia de cambio */            
            
Select  @VSID_GEST = ID_GEST,            
@VSID_DIFE = ID_DIFE,            
@VSCO_MONE_CTB1 = CO_MONE,     
@VSID_0004 = ID_0004            
From TTCNTB_EMPR            
Where CO_EMPR = @ISCO_EMPR and            
NU_CNTB_EMPR = @INNU_CNTB_EMP1           
            
Select  @VSCO_MONE_NACI = CO_MONE_NACI            
From TMEMPR        
Where CO_EMPR = @ISCO_EMPR        
            
Select @VSOP_GEST = CO_OPRC_CNTB            
From TTIDEN_OPER            
Where  CO_EMPR = @ISCO_EMPR           
And NU_CNTB_EMPR = @INNU_CNTB_EMP1            
And ID_OPRC = @VSID_GEST            
            
Select @VSOP_DIFE = CO_OPRC_CNTB            
From TTIDEN_OPER Where  CO_EMPR = @ISCO_EMPR           
And NU_CNTB_EMPR = @INNU_CNTB_EMP1            
And ID_OPRC = @VSID_DIFE            
    
Select @VSOP_DIFE_PEND = CO_OPRC_CNTB            
From TTIDEN_OPER Where  CO_EMPR = @ISCO_EMPR           
And NU_CNTB_EMPR = @INNU_CNTB_EMP1            
And ID_OPRC = @VSID_0004    
            
/* Elimina datos de la contabilidad 2 */            
Delete From TXMVTO_CNTB             
Where CO_EMPR = @ISCO_EMPR And            
NU_CNTB_EMPR = @INNU_CNTB_EMP2 and            
NU_ANNO = @INNU_ANNO and            
NU_MESE between @INNU_MES1 And @INNU_MES2                   
            
If @@ERROR <> 0     /*si falla  el Delete*/            
Begin             
  Rollback Transaction SP_TXMVTO_CNTB_I07            
  Return            
End            
            
Delete From TCFECH_PROC            
Where CO_EMPR = @ISCO_EMPR And            
NU_CNTB_EMPR = @INNU_CNTB_EMP2 and            
NU_ANNO = @INNU_ANNO and            
NU_MESE between @INNU_MES1 And @INNU_MES2                   
            
If @@ERROR <> 0     /*si falla  el Delete*/            
Begin             
  Rollback Transaction SP_TXMVTO_CNTB_I07            
  Return            
End            
            
/* Crea periodos conTables */            
Insert Into TCFECH_PROC             
( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ULTI_ASTO,             
ST_CIER_CNTB, FE_CIER_CNTB, ST_MAYO_CNTB, FE_MAYO_CNTB, CO_USUA_CREA, FE_USUA_CREA,            
CO_USUA_MODI, FE_USUA_MODI )            
Select CO_EMPR, @INNU_CNTB_EMP2, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, 0,            
'N', Null, 'N', Null, system_user, getdate(), system_user, getdate()            
From TCFECH_PROC            
Where  CO_EMPR = @ISCO_EMPR and            
NU_CNTB_EMPR = @INNU_CNTB_EMP1 and            
NU_ANNO = @INNU_ANNO and            
NU_MESE between @INNU_MES1 And @INNU_MES2            
            
If @@ERROR <> 0     /*si falla  el Insert*/            
Begin             
  Rollback Transaction SP_TXMVTO_CNTB_I07            
  Return            
End            
            
Declare CU_TXMVTO_CNTB_I07_1 Cursor            
For            
Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ANNO, t1.NU_MESE, t1.NU_ASTO, t1.NU_SECU, 
t1.FE_ASTO_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU, 
t1.FE_DOCU, t1.TI_CAMB, t1.CO_MONE, t1.FA_CAMB, t1.TI_OPER, t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB, 
t1.DE_GLOS, t1.NO_GIRA, t1.CO_ORDE_SERV, t1.SI_MVTO_CNTB, t2.ST_CNTA_CAMB, t1.FA_CAMB_DIAR, 
t3.FA_CMPR_OFIC, t3.FA_VNTA_OFIC 
From TXMVTO_CNTB t1 
  Left Outer join TMPLAN_EMPR t2 
  On t1.CO_EMPR = t2.CO_EMPR 
  And t1.CO_CNTA_EMPR = t2.CO_CNTA_EMPR 
  And T2.NU_ANNO = 9999 , 
  TCFACT_CAMB t3
Where t1.CO_EMPR = @ISCO_EMPR 
And   t1.NU_CNTB_EMPR = @INNU_CNTB_EMP1 
And   Not ( t1.CO_OPRC_CNTB = IsNull(@VSOP_GEST, '') Or t1.CO_OPRC_CNTB = IsNull(@VSOP_DIFE, '')  
	    Or t1.CO_OPRC_CNTB = IsNull(@VSOP_DIFE_PEND, '') )
And   t1.NU_ANNO = @INNU_ANNO 
And   t1.NU_MESE >= @INNU_MES1 
And   t1.NU_MESE <= @INNU_MES2 
And   t1.SI_MVTO_CNTB = 'APR' 
And   t3.CO_MONE = @ISCO_MONE_CTB2 
And   datepart(DD, t1.FE_ASTO_CNTB) = datepart(DD, T3.FE_CAMB) 
And   datepart(MM, t1.FE_ASTO_CNTB) = datepart(MM, T3.FE_CAMB) 
And   datepart(YY, t1.FE_ASTO_CNTB) = datepart(YY, T3.FE_CAMB) 
Order By t1.CO_EMPR, t1.NU_CNTB_EMPR, t1.NU_ANNO, t1.NU_MESE, t1.NU_ASTO, t1.NU_SECU
            
Open CU_TXMVTO_CNTB_I07_1            
Fetch CU_TXMVTO_CNTB_I07_1 Into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO,             
       @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CDFE_ASTO_CNTB,            
       @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,            
       @CSTI_CAMB,@CSCO_MONE, @CNFA_CAMB, @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,            
       @CSDE_GLOS, @CSNO_GIRA,@CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CSST_CNTA_CAMB,             
       @CNFA_CAMB_DIAR, @CNFA_CAMB_0001, @CNFA_CAMB_0002            
            
While @@Fetch_status = 0            
Begin            
if @CNIM_MVTO_ORIG != 0            
Begin            
            
 If @CSCO_MONE = @ISCO_MONE_CTB2            
  Begin            
    Select @CNIM_MVTO_CNTB = @CNIM_MVTO_ORIG            
    Select @CSTI_CAMB = 'PAC'            
    if @CNIM_MVTO_CNTB != 0.00            
      Select @CNFA_CAMB = Round((@CNIM_MVTO_ORIG / @CNIM_MVTO_CNTB),3)            
    Else            
      Select @CNFA_CAMB = 1.000000            
  End                    
 Else            
  Begin            
       
  Select @VSCO_MONE_0001 = CO_MON1,       
  @VSCO_MONE_BA01 = CO_MONE_BAS1        
  From TMCONV_MONE       
  Where CO_MONE_ORIG = @CSCO_MONE       
  And CO_MONE_DEST = @ISCO_MONE_CTB2      
      
  Select @CNFA_CAMB = (Case When @CSST_CNTA_CAMB = 'COM' Then FA_CMPR_OFIC        
  Else FA_VNTA_OFIC End)         
  From TCFACT_CAMB         
   Where CO_MONE = @VSCO_MONE_0001        
  And CO_MONE_BASE = @VSCO_MONE_BA01      
  And Convert(DateTime, Convert(Varchar, FE_CAMB, 103), 103)  =         
  Convert(DateTime, Convert(Varchar, @CDFE_ASTO_CNTB, 103), 103)        
      
          
    ---- Convierte importe original en importe moneda contabilidad            
    Execute  SP_CONV_MONE_Q01  @ISCO_EMPR, @CSCO_MONE, @INNU_CNTB_EMP2, @CSTI_CAMB, @CSST_CNTA_CAMB,            
  @CNFA_CAMB, @CDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P', @CNIM_MVTO_CNTB OutPut            
  End            
            
Insert Into TXMVTO_CNTB            
(CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO,            
NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU,            
NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_DIAR, TI_OPER,            
IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, NO_GIRA, CO_ORDE_SERV, SI_MVTO_CNTB, ST_GEST, ST_REDO)            
Values            
(@ISCO_EMPR, @INNU_CNTB_EMP2, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE, @CSNU_ASTO,            
@CNNU_SECU, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU,            
@CSNU_DOCU, @CDFE_DOCU, @CSST_CNTA_CAMB, @CSCO_MONE, @CNFA_CAMB, @CNFA_CAMB, @CSTI_OPER,            
@CNIM_MVTO_ORIG, Round(@CNIM_MVTO_CNTB, 2), @CSDE_GLOS, @CSNO_GIRA, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, 'N', 'N')            
            
If @@ERROR <> 0        /*si falla  el Insert*/            
Begin        
        
  Close CU_TXMVTO_CNTB_I07_1            
  Deallocate CU_TXMVTO_CNTB_I07_1            
  Rollback Transaction SP_TXMVTO_CNTB_I07            
  Return            
End             
End            
            
Fetch CU_TXMVTO_CNTB_I07_1 into            
@CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CDFE_ASTO_CNTB,            
@CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_CAMB,            
@CSCO_MONE, @CNFA_CAMB, @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSNO_GIRA,            
@CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CSST_CNTA_CAMB, @CNFA_CAMB_DIAR,             
@CNFA_CAMB_0001, @CNFA_CAMB_0002            
End            
Close CU_TXMVTO_CNTB_I07_1            
Deallocate CU_TXMVTO_CNTB_I07_1            
            
/* Actualiza Fecha de Proceso con el oltimo nomero de asiento */            
Declare CU_TXMVTO_CNTB_I07_2 Cursor            
For            
Select CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, max(convert(int, NU_ASTO))            
From TXMVTO_CNTB            
Where CO_EMPR = @ISCO_EMPR And            
NU_CNTB_EMPR = @INNU_CNTB_EMP2 And             
NU_ANNO = @INNU_ANNO and            
NU_MESE between @INNU_MES1 And @INNU_MES2            
Group By CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE            
            
Open CU_TXMVTO_CNTB_I07_2            
Fetch CU_TXMVTO_CNTB_I07_2 Into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE,            
@VNNU_ULTI_ASTO            
While @@Fetch_status = 0            
Begin            
  Update TCFECH_PROC            
  Set NU_ULTI_ASTO = @VNNU_ULTI_ASTO            
  Where CO_EMPR = @ISCO_EMPR and            
  NU_CNTB_EMPR = @INNU_CNTB_EMP2 and            
  CO_UNID_CNTB = @CSCO_UNID_CNTB and            
  CO_OPRC_CNTB = @CSCO_OPRC_CNTB and NU_ANNO = @INNU_ANNO and            
  NU_MESE = @CNNU_MESE            
            
If @@ERROR <> 0                 
Begin             
  Rollback Transaction SP_TXMVTO_CNTB_I07            
  Return            
End            
            
Fetch CU_TXMVTO_CNTB_I07_2 Into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE, @VNNU_ULTI_ASTO                
End            
Close CU_TXMVTO_CNTB_I07_2            
Deallocate CU_TXMVTO_CNTB_I07_2            
Commit            
Return                                                                                 
/*-------------------------------- Fin ------------------------------------*/    

GO
